package co.edu.usbcali.sgi.presentation.backEndBeans;


import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import com.icesoft.faces.component.ext.HtmlInputSecret;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlOutputLabel;

import co.edu.usbcali.sgi.modelo.Usuario;
import co.edu.usbcali.sgi.presentation.businessDelegate.BusinessDelegatorView;
import co.edu.usbcali.sgi.utilities.*;

public class LoginView {

	private boolean btnIngresar = false;

	private HtmlInputText txtLogin;
	private HtmlInputSecret txtPassword;
	private String login;
	private String pass;
	
	public HtmlInputText getTxtLogin() {

		return txtLogin;
	}

	public boolean isBtnIngresar() {
		return btnIngresar;
	}
	public String action_abrir() {
		btnIngresar = true;
		return "";
	}

	public void setBtnIngresar(boolean btnIngresar) {
		this.btnIngresar = btnIngresar;
	}

	public void setTxtLogin(HtmlInputText txtLogin) {
		this.txtLogin = txtLogin;
	}

	public HtmlInputSecret getTxtPassword() {
		return txtPassword;
	}

	public void setTxtPassword(HtmlInputSecret txtPassword) {
		this.txtPassword = txtPassword;
	}

	public String action_ingresar() {
		try {
			System.out.println("Arranca el metodo ....");
			login = txtLogin.getValue().toString().toUpperCase();
			 pass = txtPassword.getValue().toString();
			Usuario usuario = new Usuario();

			if (login.trim().equals("")) {
				throw new Exception("El login no es valido");

			}
			if(!Utilities.soloNumeros(login)){
				throw new Exception("El login debe ser númerico");
			}
			if (pass.trim().equals("")) {
				throw new Exception("La contraseña no es valida");
			}


			usuario = BusinessDelegatorView.obtenerUsuarioContrasenaLogin(pass,
					login);

			if (usuario.equals("")) {
				throw new Exception("El login y la contraseña son incorrectos");
			}

			if (usuario != null) {

				System.out.println("..."
						+ usuario.getTipoUsuario().getTuCod()+".."+usuario.getPersona().getPerCedula()+".."+usuario.getUsuPass());
				if (usuario.getTipoUsuario().getTuCod().equals("1")) {
				//	FacesUtils.setSessionParameter("usuario", usuario);
					
					HttpSession session = (HttpSession) FacesContext
					.getCurrentInstance().getExternalContext().getSession(true);
					
//					usuario.setUsuLogin(login);
//					usuario.setUsuContrasena(pass);

					session.setAttribute("USUARIO_LOGUEADO", usuario);
					FacesUtils.setSessionParameter("usuario", usuario.getPersona().getPerPrimerApellido());
					//FacesUtils.setSessionParameter("usuario", usuario.getPersona().getPerPrimerApellido());
					return "goSecurity";


				} else if (usuario.getTipoUsuario().getTuCod().equals("2")) {
					HttpSession session = (HttpSession) FacesContext
					.getCurrentInstance().getExternalContext().getSession(true);

//					usuario.setUsuLogin(login);
//					usuario.setUsuContrasena(pass);

					session.setAttribute("USUARIO_LOGUEADO", usuario);
					FacesUtils.setSessionParameter("usuario", usuario.getPersona().getPerPrimerApellido());
					return "goPanelAdmin";

				} else if (usuario.getTipoUsuario().getTuCod().equals("3")){
					HttpSession session = (HttpSession) FacesContext
					.getCurrentInstance().getExternalContext().getSession(true);

//					usuario.setUsuLogin(login);
//					usuario.setUsuContrasena(pass);

					session.setAttribute("USUARIO_LOGUEADO", usuario);
					FacesUtils.setSessionParameter("usuario", usuario.getPersona().getPerPrimerApellido());
					return "goPanelPropietario";

				}else if (usuario.getTipoUsuario().getTuCod().equals("4")){
					HttpSession session = (HttpSession) FacesContext
					.getCurrentInstance().getExternalContext().getSession(true);

//					usuario.setUsuLogin(login);
//					usuario.setUsuContrasena(pass);

					session.setAttribute("USUARIO_LOGUEADO", usuario);
					FacesUtils.setSessionParameter("usuario", usuario.getPersona().getPerPrimerApellido());
					return "goPanelArrendatario";

				}else if (usuario.getTipoUsuario().getTuCod().equals("5")){
					HttpSession session = (HttpSession) FacesContext
					.getCurrentInstance().getExternalContext().getSession(true);

//					usuario.setUsuLogin(login);
//					usuario.setUsuContrasena(pass);

					session.setAttribute("USUARIO_LOGUEADO", usuario);
					FacesUtils.setSessionParameter("usuario", usuario.getPersona().getPerPrimerApellido());
					return "goPanelGrupoFamiliar";

				} else if (usuario.getTipoUsuario().getTuCod().equals("6")){
					HttpSession session = (HttpSession) FacesContext
					.getCurrentInstance().getExternalContext().getSession(true);

//					usuario.setUsuLogin(login);
//					usuario.setUsuContrasena(pass);

					session.setAttribute("USUARIO_LOGUEADO", usuario);
					FacesUtils.setSessionParameter("usuario", usuario.getPersona().getPerPrimerApellido());
					return "goPanelPorteria";

				}
			}
		} catch (Exception e) {
			FacesUtils.addErrorMessage(e.getMessage());
		}
		return "";

	}

	public String action_salir() {

		// Deme la session. Si no existe, NO cree una nueva
		HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
		.getExternalContext().getSession(false);

		if (session != null) {

			session.removeAttribute("USUARIO_LOGUEADO");
		}

		return "goLogin";

	}

	public String action_clear() {
		txtLogin.setValue(null);
		txtPassword.setValue(null);

		return "";
	}

}
